61) new { имя_А = значение_А, имя_В = значение_В, ... } new { Count = 10, Max = 100, Min = 0 } 62) var myOb = new { Count = 10, Max = 100, Min = 0 } 63) Console.WriteLine("Счет равен " + myOb.Count); if(i = myOb.Min) // ... 64) Листинг 9.16 // Испо презентация

Содержание

// Класс, связывающий наименование товара с его порядковым номером. class Item { public string Name { get; set; } public int ItemNumber { get; set;

Слайд 161)
new { имя_А = значение_А, имя_В = значение_В, ... }
new

{ Count = 10, Max = 100, Min = 0 }

62) var myOb = new { Count = 10, Max = 100, Min = 0 }

63)
Console.WriteLine("Счет равен " + myOb.Count);
if(i <= myOb.Max && i >= myOb.Min) // ...

64) Листинг 9.16
// Использовать анонимный тип для усовершенствования
// программы, демонстрирующей применение оператора join.

using System;
using System.Linq;


Слайд 2// Класс, связывающий наименование товара с его порядковым номером.
class Item


{
public string Name { get; set; }
public int ItemNumber { get; set; }

public Item(string n, int inum) {
Name = n;
ItemNumber = inum;
}
}

// Класс, связывающий наименование товара с состоянием
// его запасов на складе.
class InStockStatus
{
public int ItemNumber { get; set; }
public bool InStock { get; set; }

Слайд 3 public InStockStatus(int n, bool b) {
ItemNumber =

n;
InStock = b;
}
}
class AnonTypeDemo {
static void Main() {

Item[] items = {
new Item("Кусачки", 1424),
new Item("Тиски", 7892),
new Item("Молоток", 8534),
new Item("Пила", 6411)
};
InStockStatus[] statusList = {
new InStockStatus(1424, true),
new InStockStatus(7892, false),
new InStockStatus(8534, true),
new InStockStatus(6411, true)
};

Слайд 4 // Сформировать запрос, объединяющий объекты классов Item
// и InStockStatus

для составления списка наименований
// товаров и их наличия на складе. Теперь для этой цели
// используется анонимный тип.

var inStockList = from item in items
join entry in statusList
on item.ItemNumber
equals entry.ItemNumber
select new { Name = item.Name,
InStock = entry.InStock };

Console.WriteLine("Товар\tНаличие\n");

// Выполнить запрос и вывести его результаты.
foreach(var t in inStockList)
Console.WriteLine("{0}\t{1}", t.Name,
t.InStock);
}
}

Слайд 565)
select new { Name = item.Name,

InStock = entry.InStock };

66) select new { item.Name, entry.InStock };

67) Листинг 9.17
// Продемонстрировать применение простого группового объединения.

using System;
using System.Linq;

// Этот класс связывает наименование вида транспорта,
// например, поезда, с общей классификацией транспорта:
// наземного, морского, воздушного или речного.
class Transport
{
public string Name { get; set; }
public string How { get; set; }




Слайд 6 public Transport(string n, string h) {
Name =

n;
How = h;
}
}
class GroupJoinDemo {
static void Main() {

// Массив классификации видов транспорта.
string[] travelTypes = {
"Воздушный",
"Морской",
"Наземный",
"Речной"
};


Слайд 7 // Массив видов транспорта.
Transport[] transports =

{
new Transport("велосипед", "Наземный"),
new Transport("аэростат", "Воздушный"),
new Transport("лодка", "Речной"),
new Transport("самолет", "Воздушный"),
new Transport("каноэ", "Речной"),
new Transport("биплан", "Воздушный"),
new Transport("автомашина", "Наземный"),
new Transport("судно", "Морской"),
new Transport("поезд", "Наземный")
};
// Сформировать запрос, в котором групповое
// объединение используется для составления списка
// видов транспорта по соответствующим категориям.
var byHow = from how in travelTypes
join trans in transports
on how equals trans.How
into lst
select new { How = how, Tlist = lst };

Слайд 8 // Выполнить запрос и вывести его результаты.

foreach(var t in byHow) {
Console.WriteLine("К категории <{0} транспорт> "
+ "относится: ", t.How);
foreach(var m in t.Tlist)
Console.WriteLine(" " + m.Name);

Console.WriteLine();
}
}

68)
К категории <Воздушный транспорт> относится:
аэростат
самолет
биплан
 
К категории <Морской транспорт> относится:
Судно

Слайд 9К категории относится:
велосипед
автомашина
поезд
 
К

категории <Речной транспорт> относится:
лодка
каноэ

69)
var byHow = from how in travelTypes
join trans in transports
on how equals trans.How
into lst
select new { How = how, Tlist = lst };


Слайд 1070)
foreach(var t in byHow)
{
Console.WriteLine("К категории относится:", t.How);
 

foreach(var m in t.Tlist)
Console.WriteLine(" " + m.Name);
 
Console.WriteLine() ;
}


Слайд 1172) delegate TResult Func(Т arg)

73) Листинг 9.18
// Использовать

методы запроса для формирования простого запроса. Это переделанный вариант
// первого примера программы из данной главы.

using System;
using System.Linq;

class SimpQuery
{
static void Main()
{
int[] nums = { 1, -2, 3, 0, -4, 5 };

// Использовать методы Where() и Select() для
// формирования простого запроса.


Слайд 12 var posNums = nums.Where(n => n > 0).Select(r =>

r);

Console.Write(
"Положительные значения из масива nums: ");

// Выполнить запрос и вывести его результаты.
foreach(int i in posNums) Console.Write(i + " ");
Console.WriteLine();
}
}

74) Положительные значения из массива nums: 1 3 5

75) var posNums = nums.Where(n => n > 0).Select(r => r);

76) var posNums = nums.Where(n => n > 0).Select (r => r * 10);

77) var posNums = nums.Where
(n => n > 0).OrderByDescending(j => j);

Слайд 1378) Листинг 9.19
// Продемонстрировать применение метода GroupBy().
// Это переработанный вариант

примера, приведенного
// ранее для демонстрации синтаксиса запросов.

using System;
using System.Linq;

class GroupByDemo
{
static void Main()
{
string[] websites = {
"hsNameA.com", "hsNameB.net", "hsNameC.net",
"hsNameD.com","hsNameE.org", "hsNameF.org",
"hsNameG.tv", "hsNameH.net", "hsNameI.tv"
};



Слайд 14 // Использовать методы запроса для группирования
// веб-сайтов

по имени домена самого верхнего
// уровня.
var webAddrs = websites.Where(w =>
w.LastIndexOf('.') != 1).
GroupBy(x => x.Substring(x.LastIndexOf('.')));

// Выполнить запрос и вывести его результаты.
foreach(var sites in webAddrs) {
Console.WriteLine("Веб-сайты, сгруппированные "
+ "по имени домена" + sites.Key);
foreach(var site in sites)
Console.WriteLine(" " + site);
Console.WriteLine();
  }
}
}

Слайд 1579)
var inStockList = from item in items

join entry in statusList
on item.ItemNumber
equals entry.ItemNumber
select new Temp(item.Name, entry.InStock);

80)
// Использовать метод запроса Join() для составления
// списка наименований товаров и состояния
// их запасов на складе.
var inStockList = items.Join(statusList,
k1 => kl.ItemNumber,
k2 => k2.ItemNumber,
(kl, k2) => new Temp(k1.Name,
k2.InStock) );

Слайд 1681)
var inStockList = items.Join(statusList,

k1 => k1.ItemNumber,
k2 => k2.ItemNumber,
(kl, k2) => new { kl.Name,
k2.InStock} );

82) where х < 10

83) Where(х => х < 10)


Слайд 1885) Листинг 9.20
// Использовать ряд методов расширения, определенных
// в классе

Enumerable.

using System;
using System.Linq;

class ExtMethods
{
static void Main()
{
int[] nums = { 3, 1, 2, 5, 4 };

Console.WriteLine("Минимальное значение равно " +
nums.Min());
Console.WriteLine("Максимальное значение равно “
+ nums.Max());

Console.WriteLine("Первое значение равно " +
nums.First());

Слайд 1986) Листинг 9.21
Минимальное значение равно 1
Максимальное значение равно 5
Первое

значение равно 3
Последнее значение равно 4
Суммарное значение равно 15
Среднее значение равно 3
Все значения больше нуля.
По крайней мере одно значение является четным
Массив содержит значение 3.

87)
// Использовать метод Average() вместе с синтаксисом
// запросов.
using System; 
using System.Linq;

class ExtMethods2
{
static void Main()

Слайд 20 {
int[] nums = { 1, 2, 4,

8, 6, 9, 10, 3, 6, 7 };
var ltAvg = from n in nums
let x = nums.Average()
where n < x
select n;

Console.WriteLine("Среднее значение равно " +
nums.Average());

Console.Write("Значения меньше среднего: ");

// Выполнить запрос и вывести его результаты.
foreach(int i in ltAvg) Console.Write(i + " ");

Console.WriteLine();
}
}


Слайд 2188)
Среднее значение равно 5.6
Значения меньше среднего: 1 2 4 3
89)
var

ltAvg = from n in nums
let x = nums.Average()
where n < x
select n;
90) Листинг 9.22
// Использовать режим немедленного выполнения запроса.

using System;
using System.Linq;

class ImmediateExec
{
static void Main()
{
int[] nums = { 1, -2, 3, 0, -4, 5 };

Слайд 22 // Сформировать запрос на получение количества
//

положительных значений в массиве nums.
int len = (from n in nums
where n > 0
select n).Count();
Console.WriteLine(
"Количество положительных значений в массиве nums: "
+ len);
}
}

91)
Количество положительных значений в массиве nums: 3

92)
var posNums = from n in nums
where n > 0
select n;
int len = posNums.Count(); // запрос выполняется здесь

Слайд 2393)
int[] pnums = posNum.ToArray(); // запрос выполняется здесь
foreach(int i in pnums)
{


Console.Write(i + " ");
}

94) Листинг 19.23
// Пример простого дерева выражений.

using System;
using System.Linq;
using System.Linq.Expressions;

class SimpleExpTree
{
static void Main()
{


Слайд 24 // Представить лямбда-выражение в виде данных.

Expression>
IsFactorExp = (n, d) => (d != 0) ? (n % d) == 0 : false;

// Скомпилировать данные выражения в исполняемый код.
Func IsFactor =
IsFactorExp.Compile();

// Выполнить выражение.
if(IsFactor(10, 5))
Console.WriteLine("Число 5 является множителем 10.");

if(!IsFactor(10, 7))
Console.WriteLine(
"Число 7 не является множителем 10.");

Console.WriteLine();
}
}

Слайд 2595)
Число 5 является множителем 10.
Число 7 не является множителем 10.

96)
Expression

int, bool>>
IsFactorExp = (n, d) => (d != 0) ? (n % d) == 0 : false;

97)
Func IsFactor = IsFactorExp.Compile();

98)
static возращаемый_тип имя (
this тип_вызывающего_объекта ob,
список_параметров)


Слайд 2699) Листинг 9.24
// Создать и использовать ряд методов расширения.

using System;


using System.Globalization;
static class MyExtMeths
{
// Возвратить обратную величину числового
// значения типа double.
public static double Reciprocal(this double v)
{
return 1.0 / v;
}

// Изменить на обратный регистр букв в символьной
// строке и возвратить результат.

Слайд 27 public static string RevCase(this string str)
{

string temp = "";

foreach(char ch in str)
{
if(Char.IsLower(ch)) temp +=
Char.ToUpper(ch, CultureInfo.CurrentCulture);
else temp += Char.ToLower(ch,
CultureInfo.CurrentCulture);
}
return temp;
}
// Возвратить абсолютное значение выражения n / d.
public static double AbsDivideBy(this double n,
double d)
{
return Math.Abs(n / d);
}
}

Слайд 28class ExtDemo
{
static void Main()
{

double val = 8.0;
string str = "Alpha Beta Gamma";

// Вызвать метод равширения Reciprocal().
Console.WriteLine(
"Обратная величина {0} равна {1}",
val, val.Reciprocal());

// Вызвать метод расширения RevCase().
Console.WriteLine(str + " после сиены регистра “
+ str.RevCase());
// Использовать метод расширения AbsDivideBy();
Console.WriteLine(
"Результат вызова метода val.AbsDivideBy(-2): " +
val.AbsDivideBy(-2));
}
}

Слайд 29100)
Обратная величина 8 равна 0.125
Alpha Beta Gamma после смены регистра: aLPHA

bЕТА gАММА
Результат вызова метода val.AbsDivideBy(-2): 4

101) val.AbsDivideBy(-2)

102)
8.0.Reciprocal()
8.0.AbsDivideBy(-1)

103) "AbCDe".RevCase()


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика